package com.goofengcn.website.web.controller;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.hibernate.Query;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;


//@Controller
/**
 * @author Johnson
 */
public class AnjieBaseController {
//
//	@Autowired
//	protected UserService userService;
//
//	@Autowired
//	protected CompanyService companyService;
//
//	@Autowired
//	protected InquiryService inquiryService;
//	
//	@Autowired
//	protected OrderService orderService;
//	
//	@Autowired
//	protected WaybillService waybillService;
//
//	@Autowired
//	protected LocationService locationService;
//
//	private final String USER_IN_SESSION = "anjie_current_user";
//	private final String TITLE_IN_REQUEST = "anjie_current_title";
//
//	@InitBinder
//	public void initBinder(WebDataBinder binder) {
//
//		SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
//		dateFormat.setLenient(false);
//		binder.registerCustomEditor(Date.class, new CustomDateEditor(
//				dateFormat, false));
//
//		binder.registerCustomEditor(ClearingForm.class, new EnumPropertyEditor(
//				ClearingForm.class));
//		binder.registerCustomEditor(Receipt.class, new EnumPropertyEditor(
//				Receipt.class));
//		binder.registerCustomEditor(ConveyanceType.class,
//				new EnumPropertyEditor(ConveyanceType.class));
//		binder.registerCustomEditor(Gender.class, new EnumPropertyEditor(
//				Gender.class));
//		binder.registerCustomEditor(LoadAndUnload.class,
//				new EnumPropertyEditor(LoadAndUnload.class));
//		binder.registerCustomEditor(PackingSpecification.class,
//				new EnumPropertyEditor(PackingSpecification.class));
//		binder.registerCustomEditor(PickAndDeliver.class,
//				new EnumPropertyEditor(PickAndDeliver.class));
//		binder.registerCustomEditor(VolumeUnit.class, new EnumPropertyEditor(
//				VolumeUnit.class));
//		binder.registerCustomEditor(WeightUnit.class, new EnumPropertyEditor(
//				WeightUnit.class));
//		binder.registerCustomEditor(CompanyStructure.class,
//				new EnumPropertyEditor(CompanyStructure.class));
//		binder.registerCustomEditor(InquiryOfferType.class,
//				new EnumPropertyEditor(InquiryOfferType.class));
//		binder.registerCustomEditor(TimeSelect.class,
//				new EnumPropertyEditor(TimeSelect.class));
//		binder.registerCustomEditor(OrderTrackingStatus.class,
//				new EnumPropertyEditor(OrderTrackingStatus.class));
//	}
//
//	public String title() {
//		RequestAttributes attributes = RequestContextHolder.currentRequestAttributes();
//		Object o = attributes.getAttribute(TITLE_IN_REQUEST,
//			RequestAttributes.SCOPE_REQUEST);
//		return o == null ? "" : o.toString();
//	}
//
//	protected void setTitle(String title) {
//		RequestAttributes attributes = RequestContextHolder
//		.currentRequestAttributes();
//		attributes.setAttribute(TITLE_IN_REQUEST, title,
//		RequestAttributes.SCOPE_REQUEST);
//	}
//
//	@ModelAttribute("clearingForms")
//	public ClearingForm[] clearingForms() {
//		return ClearingForm.values();
//	}
//
//	@ModelAttribute("receipts")
//	public Receipt[] receipts() {
//		return Receipt.values();
//	}
//
//	@ModelAttribute("conveyanceTypes")
//	public ConveyanceType[] conveyanceTypes() {
//		return ConveyanceType.values();
//	}
//
//	@ModelAttribute("orderTrackingStatuss")
//	public OrderTrackingStatus[] orderTrackingStatuss() {
//		return OrderTrackingStatus.values();
//	}
//	
//	@ModelAttribute("genders")
//	public Gender[] genders() {
//		return Gender.values();
//	}
//
//	@ModelAttribute("loadAndUnloads")
//	public LoadAndUnload[] loadAndUnloads() {
//		return LoadAndUnload.values();
//	}
//
//	@ModelAttribute("packingSpecifications")
//	public PackingSpecification[] packingSpecifications() {
//		return PackingSpecification.values();
//	}
//
//	@ModelAttribute("pickAndDelivers")
//	public PickAndDeliver[] pickAndDelivers() {
//		return PickAndDeliver.values();
//	}
//
//	@ModelAttribute("volumeUnits")
//	public VolumeUnit[] volumeUnits() {
//		return VolumeUnit.values();
//	}
//
//	@ModelAttribute("weightUnits")
//	public WeightUnit[] weightUnits() {
//		return WeightUnit.values();
//	}
//
//	@ModelAttribute("companyStructures")
//	public CompanyStructure[] companyStructures() {
//		return CompanyStructure.values();
//	}
//	
//	@ModelAttribute("inquiryOfferTypes")  
//	public InquiryOfferType[] inquiryOfferTypes() {
//		return InquiryOfferType.values();
//	}
//	
//	@ModelAttribute("timeSelects")  
//	public TimeSelect[] timeSelects() {
//		return TimeSelect.values();
//	}
//
//	/**
//	 * @return 当前登录的用户
//	 */
//	public User getCurrentUser() {
//		Object mutex = RequestContextHolder.currentRequestAttributes()
//				.getSessionMutex();
//		RequestAttributes attributes = RequestContextHolder
//				.currentRequestAttributes();
//		Object user = null;
//		synchronized (mutex) {
//			user = attributes.getAttribute(USER_IN_SESSION,
//					RequestAttributes.SCOPE_SESSION);
//
//			return (User) user;
//
//		}
//	}
//
//	/**
//	 * @param user
//	 *            设置当前用户
//	 */
//	public void setCurrentUser(User user) {
//		RequestAttributes attributes = RequestContextHolder
//				.currentRequestAttributes();
//		attributes.setAttribute(USER_IN_SESSION, user,
//				RequestAttributes.SCOPE_SESSION);
//		if(user == null){
//			//清楚session
//			attributes.removeAttribute(USER_IN_SESSION, RequestAttributes.SCOPE_SESSION);
//			RequestContextHolder.resetRequestAttributes();
//		}
//	}
//	
//	public Company getCurrentCompany() {
//		User user = getCurrentUser();
//		if (user == null) return null;
//		return companyService.adminCompany(user.getUsername());
//	}
//	
//	/**
//	 * 根据公司名称，验证是否是当前用户的公司名
//	 * @param companyCode
//	 * @return
//	 */
//	public Company verifyCurrentCompany(String companyCode) {
//		Company company = getCurrentCompany();
//		return company == null ? null :
//			companyCode.equals(company.getCode()) ? company : null;
//	}
//	
//	/**
//	 * 分页处理
//	 * @param page
//	 * @param form
//	 * @param request
//	 */
//	public void preparePage(PaginationSupport page, BasePageForm form,Model model)
//	{
//		form.resetPage(page);
//		model.addAttribute(AnjieConstants.PAGE_BEGINROW, String.valueOf(page
//				.getStartIndex() + 1));
//		model.addAttribute(AnjieConstants.PAGE_PAGENO, String.valueOf(
//                        page.getStartIndex() / page.getPageSize() + 1));
//		model.addAttribute(AnjieConstants.PAGE_PAGESIZE, String.valueOf(page
//				.getPageSize()));
//		model.addAttribute(AnjieConstants.PAGE_TOTALROWS, String.valueOf(page
//				.getTotalCount()));
//
//	}
//	
//	
//	/**
//	 * 分页处理,不对form处理
//	 * @param page
//	 * @param form
//	 * @param request
//	 */
//	public void preparePage(PaginationSupport page,Model model)
//	{
//		model.addAttribute(AnjieConstants.PAGE_BEGINROW, String.valueOf(page
//				.getStartIndex() + 1));
//		model.addAttribute(AnjieConstants.PAGE_PAGENO, String.valueOf(
//                        page.getStartIndex() / page.getPageSize() + 1));
//		model.addAttribute(AnjieConstants.PAGE_PAGESIZE, String.valueOf(page
//				.getPageSize()));
//		model.addAttribute(AnjieConstants.PAGE_TOTALROWS, String.valueOf(page
//				.getTotalCount()));
//
//	}
}
